const fs = require('fs')

const path = require('path')

//定义正则表达式,分别匹配 <Sstyle></style>和<script></script>标签
const regStyle = /<style>[\s\S]*<\/style>/
const regScript = /<script>[\s\S]*<\/script>/

//调用fs.readFile()方法读取文件
fs.readFile(path.join(__dirname,'../index.html'),'utf-8',function(err,dataStr){
    //读取失败
    if(err) return console.log('读取文件失败！'+err.message)
    //读取成功    
  resolveCSS(dataStr)
  resolveJS(dataStr)
  resolveHTML(dataStr)
})


//定义处理css样式方法
function resolveCSS(htmlStr){
    //使用正则表达式提取内容
    const r1 = regStyle.exec(htmlStr)
    
    //将提取出来的样式字符串，进行字符串的 reaplace 替换操作
    const newCSS = r1[0].replace('<style>','').replace('</style>','')
    //调用 fs.writeFile()的方法 提取的样式 写入文件夹
    fs.writeFile(path.join(__dirname,'../index.css'),newCSS,function(err){
        if(err) return console.log('写入css样式失败!'+err.message)
            console.log('写入样式文件成功！')
    })

}

//定义处理js脚本的方法
function resolveJS(htmlStr){
    //通过正则表达式提取<script></script>标签
    const r2 = regScript.exec(htmlStr)
    //将提取出来的内容进一步处理
    const newJS = r2[0].replace('<script>','').replace('</script>','')
    //将处理的结果写入,index.js文件中
    fs.writeFile(path.join(__dirname,'../index.js'),newJS,function(err){
        if(err) return console.log('写入javascipt脚本失败!'+err.message)
            console.log('写入javascipt脚本成功！')
    })

}

// 定义处理html文件的方法
function resolveHTML(htmlStr){
    //将字符串调用replace方法 把内嵌入的style和script 标签替换为 外联的link和script标签
    const newHTML = htmlStr.replace(regStyle,'<link rel="stylesheet" href="./index.css">').replace(regScript,'<script src="./index.js"></script>')
    //写入index.html 文件
    fs.writeFile(path.join(__dirname,'../index1.html'),newHTML,function(err){
        if (err) return console.log('写入 HTML 文件失败！'+ err.message)
            console.log('写入 HTML 页面成功！')
    })
}